﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using CLM.Gestao.Despesas.BLL;


namespace CLM.Gestao.Despesa.UI
{
    public partial class RelatorioRateios : Form
    {
        #region Construtor

        public RelatorioRateios(int pAno, int pMes, Microsoft.Office.Interop.Excel.Application pApplication)
        {
            try
            {
                InitializeComponent();

                ExcelAppication = pApplication;

                var pos = this.PointToScreen(lblTitulo.Location);
                pos = picTitulo.PointToClient(pos);
                lblTitulo.Parent = picTitulo;
                lblTitulo.Location = pos;
                lblTitulo.BackColor = Color.Transparent;

                InicializaCombos(pAno, pMes);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        #endregion Construtor

        private Microsoft.Office.Interop.Excel.Application ExcelAppication = null;

        #region Eventos

        private void btnExportar_Click(object sender, EventArgs e)
        {
            Exportar();
        }

        #endregion Eventos

        #region Métodos Privados

        private void InicializaCombos(int pAno, int pMes)
        {
            // Carrega o combo de Período
            Administrador.BLL.Periodo Periodo = new Administrador.BLL.Periodo();
            cboPeriodo.DataSource = Periodo.GetItens(new Administrador.BLL.Periodo.Lista() { AnoPeriodo = pAno });
            cboPeriodo.DisplayMember = "DescricaoPeriodo";
            cboPeriodo.ValueMember = "MesPeriodo";

            cboPeriodo.SelectedValue = pMes;
        }

        private void ValidarInterface()
        {
            if (string.IsNullOrWhiteSpace(cboPeriodo.Text)) throw new Exception("O período é obrigatório.");
        }

        private void Exportar()
        {
            try
            {
                // Recupera o período selecionado no combo
                Administrador.BLL.Periodo.Itens Periodo = new Administrador.BLL.Periodo.Itens();
                Periodo = (Administrador.BLL.Periodo.Itens)cboPeriodo.SelectedItem;

                Despesas.BLL.Despesa desp = new Despesas.BLL.Despesa();

                var ListaRateio = desp.GerarRelatorioRateioDespesas((int)Periodo.AnoPeriodo, Periodo.IdPeriodo);

                string[] Cabecalho = { "Código Centro Custo", "Nome Centro Custo", "Código Produto", "Nome Produto", "Descrição do Lançamento", "Valor" };
                List<string> ListaCampos = new List<string> { "CodigoCentroCusto", "NomeCentroCusto", "CodigoProduto", "NomeProduto", "DescricaoLancamento", "Valor" };
                Relatorio.Excel<Despesas.BLL.Despesa.Lista>.TipoRelatorio = Relatorio.TipoRelatorio.Simples;
                Relatorio.Excel<Despesas.BLL.Despesa.Lista>.Gerar(ListaRateio, ListaCampos, Cabecalho, "Relatório de Rateios", "Rateios", ExcelAppication);


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        #endregion Métodos Privados
    }
}